/**
 * 
 */
package com.dao;

import java.util.List;

import com.beans.AdminInfo;
import com.jdbc.DBUtil;
import com.utils.PageInfo;
import com.utils.StrUtil;

/**
 * 管理员操作
 * @author MoLi
 *
 */
public class AdminDao {
	/**
	 * 根据账号和密码登录
	 * @param adminName 账号
	 * @param password 密码
	 * @return 管理员信息实体类,登录失败返回null
	 */
	//登陆
	public AdminInfo login(String adminName,String passWord) {
		String sql="select * from adminInfo where adminName=? and password=? ";
		return DBUtil.getOneObject(sql, AdminInfo.class, adminName,passWord);
	}
	//添加用户，查找是否有该用户如没有则添加，如果有返回信息
	public int addAdmin(AdminInfo admin) {
		AdminInfo a=DBUtil.getOneObject("select * from adminInfo where adminName=?", AdminInfo.class, admin.getAdminName());
		if(a==null) {
		String sql="insert into adminInfo (adminName,password,note,state) values(?,?,?,?)";
		int result=DBUtil.update(sql, admin.getAdminName(),admin.getPassword(),admin.getNote(),admin.getState());
		return result;
		}else {
			return 0;
		}
	}
	//得到管理员总行数(不含被禁用的管理员)
	 public int getAdminCount() {
		 long count= DBUtil.getScalar("select count(*) from adminInfo where state !=2") ; 
		 return Integer.parseInt(count+"");
	 }
	//得到未被禁用的管理员
	public List<AdminInfo> getAdminList(PageInfo pageInfo) {
		String sql="select a.*,b.roleName from adminInfo a left join roleInfo b on a.roleId=b.id  where a.state !=?  order by a.editDate desc limit ?,?";
		return DBUtil.getList(sql, AdminInfo.class,2, pageInfo.getBeginRow(),pageInfo.getPageSize());
	}
	//锁定时调用此函数，更改管理员状态
	public void upDateById(int id,String state) {
		String sql="update adminInfo set state=? where id=?";
		DBUtil.update(sql,state,id);	
	}
	//根据id查询管理员信息
		public AdminInfo getAdminById(int id){
			String sql="select * from adminInfo where id=?";
			return DBUtil.getOneObject(sql, AdminInfo.class, id);
		}
	//删除管理员，但并不会真的删除管理员只是将管理员状态置为2(禁用状态)
	public void del(Integer id) {
		String sql="update adminInfo set state=2 where id=?";
		DBUtil.update(sql, id);
		
	}

		//更新管理员信息
		public int updateAdmin(AdminInfo admin) {
			String sql="update adminInfo set adminName=?, password=?, note=?, state=? where id=? " ;
			Object [] params={
					admin.getAdminName(),
					admin.getPassword(),
					admin.getNote(),
					admin.getState(),
					admin.getId()
			};
			
			return DBUtil.update(sql, params);
		}
		//更新密码
		public int updatePassword(int id, String password) {
			String sql="update adminInfo set password=? where id=?";
			return DBUtil.update(sql, password,id);
		}
}
